/* -*- C++ -*- */
/**
 *  @file ORB_Run_Task.h
 *
 *  $Id: ORB_Run_Task.h 81424 2008-04-24 14:02:21Z johnnyw $
 *
 *  @author Pradeep Gore <pradeep@oomworks.com>
 *
 *
 */

#ifndef TAO_Notify_ORB_RUN_TASK_H
#define TAO_Notify_ORB_RUN_TASK_H

#include /**/ "ace/pre.h"

#include "dllmain.h"
#include <ace/Task.h>
#include <tao/ORB.h>

/**
 * @class ORB_Run_Task
 *
 * @brief Run the ORB::start method in a seperate thread.
 *
 */
class CPPXCORBA_API ORB_Run_Task : public ACE_Task_Base
{
public:
    /// Constructor
    ORB_Run_Task(void);
    ORB_Run_Task(CORBA::ORB_var orb);

    /// Destructor
    virtual ~ORB_Run_Task();

    /// The thread entry point.
    virtual int svc (void);

    int startup(CORBA::ORB_var orb,int nThreads = 1);
    int startup(int nThreads = 1);
    int shutdown(void);
    //int wait(void);

private:
    /// ORB Objects.
    CORBA::ORB_var root_orb_;
};

#include /**/ "ace/post.h"
#endif /* TAO_Notify_ORB_RUN_TASK_H */
